\section{Conclusion}

In this thesis we discussed the acceleration of distribution fitting algorithms using GPGPUs. The algorithms are reviewed and the strategy for CUDA acceleration is discussed. We find that a single CUDA device can accelerate the algorithm by a factor of 40 times; and multiple devices combined with OPENMP will further improve this acceleration.

We discussed various best practices while developing CUDA code. We showed a new method of summing CUDA threads. 

We show that further accelerations can be made by being knowledgable about the nature of the input data. Using lookup tables and unique bins can further accelerate the data in CPU and GPU. We discussed some of the drawbacks of using data structures.  

Table ~\ref{table:finalResults} shows the overall results of our acceleration.
%---------- Table --------------------------------------------
\begin{table}[h!]
\begin{center}
\begin{tabular}{|l|c|r|}
  \hline
  Data Structures & CPU time & GPU time \\   \hline
  No Data Structures & 1.2 s & 30 ms \\   \hline
  Lookup Table       & 0.12 s & 14 ms \\   \hline
  Unique Bins        & 60-100 ms & 1-2 ms \\ \hline
\end {tabular}
\caption {Summary of Results}
\label {table:finalResults}
\end{center}
\end{table}

%--------------end of Table-----------------------------------

